# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : agent的简单使用.py
# @Author: dongguangwen
# @Date  : 2025-03-22 23:52
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
from langchain.utilities import DuckDuckGoSearchAPIWrapper  # 使用 DuckDuckGo
from langchain_experimental.tools import PythonREPLTool


# 1. 初始化 OpenAI 语言模型
llm = ChatOpenAI(
    model_name="Pro-128K",
    temperature=0,
    openai_api_base="https://spark-api-open.xf-yun.com/v1",  # 修改为你的 API 地址
    openai_api_key="12345"  # 自定义 API 可能不需要 Key，设置为空字符串 ""
)


# 2. 添加 DuckDuckGo 搜索工具（无需 API Key）
search = DuckDuckGoSearchAPIWrapper()
search_tool = Tool(
    name="Search",
    func=search.run,
    description="使用 DuckDuckGo 搜索最新信息，例如新闻、数据等"
)

# 3. 添加 Python 代码执行工具
python_tool = PythonREPLTool()

# 4. 组装 Agent
tools = [search_tool, python_tool]

agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,  # 选择 Agent 类型
    verbose=True,
    handle_parsing_errors=True  # 允许解析错误时自动重试
)

# 5. 运行 Agent 进行交互
question = "2025 年 AI 发展的最新趋势是什么？"
response = agent.run(question)
print("Agent 回答:", response)

math_question = "计算 25 的平方根"
response = agent.run(math_question)
print("Agent 回答:", response)

math_question2 = "今天是几号了呢？天气怎么样呢？"
response = agent.run(math_question2)
print("Agent 回答:", response)
